The transmission of textual information in documents employing non-default fonts currently requires that one of three conditions be fulfilled: that bitmap images of glyphs be sent from source to destination; that the fonts used be stored at the destination; or that the fonts referenced be physically included in the document. Fonts are typically large in terms of the number of bytes they occupy, even when conventional (non-font-specific) compression techniques are used. Requiring that the font be stored in the target device limits the user to a small "standard" set of fonts. It is not guaranteed that any font the user prefers to use can be elicited at any given target device.
The major drawback with the bitmap representation is that for each size of glyph, a different bitmap has to be sent, leading to a large increase in the size of the document. While useful for such devices as facsimile machines, the bitmap representation is unsuitable in situations requiring document editability. The problem of encoding, transmitting, and decoding font information so that the same font-related effects are achieved at either end is hereafter called the problem of font portability. The font portability problem must be solved if the document portability problem is to be solved. This invention addresses the problem of font portability.
The prior art in the field of font portability ranges from storage at every site of a standard set of fonts and an optional set of additional fonts (in uncompressed or slightly compressed form), to a number of methods of font synthesis. Some font creation techniques distort existing fonts or interpolate between existing fonts. Examples of this category are the Adobe Acrobat.TM. and Ares Font Chameleon.TM.. Programs in this category do not claim to be able to create any given font from certain others, just to be able to derive potentially interesting fonts from others.
A second category of techniques construct new fonts by using certain parameterized shape elements. The leading example of this category is METAFONT, authored by Knuth ("The METAFONT Book", Addison-Wesley, 1986). METAFONT is a special-purpose programming language in which a font can be programmed from bottom-up, by first programming parameterized elementary shapes such as serifs and bowls. In practice, it has been found extremely difficult to design fonts using the METAFONT system.
A recent technique of interest is ElseWare Corporation's Infinifont system. Central to this system is a file or database called the `terafont`, which is the repository of all knowledge about component parts of glyphs and their variants in a whole class of fonts. The store is created manually and consists of data and functions required to create glyphs. An interpreter called the Infinifont synthesis engine interprets the functions in the terafont to create glyphs. The synthesis is modulated by a "PANOSE" file, which contains parameters, at levels from coarse to fine, and pertaining to both individual characters and the whole font.
The problems with this technique are many:
1. The set of fonts that can be replicated has to be decided at the outset, although in theory only a new PANOSE file has to be created for a new font.
2. As the requirement for accuracy of replication increases, the PANOSE and terafont files increase nonlinearly in size.
3. The target device is required to store the whole terafont (contains data for fonts it may never need).
4. There is no algorithm for creating the PANOSE file for a given font--it has to be created manually and heuristically.
5. The terafont versions at the source and destination have to be identical, and so do the interpreters.
6. For synthesizing fonts in a new script, a new terafont has to be created.
Accordingly, it is an object of this invention to provide an algorithm for creating font descriptors which adhere to certain syntactic rules, and are small enough that it is practical to embed them in text for transmission.
It is another object of this invention to provide an algorithm for recovering fonts from such font descriptors with negligible data loss.
It is still another object of this invention that the algorithms for font description and reconstruction be applicable, without modification, to any stroke-based font, regardless of script.